// 导入静态路由
import { constantRoutes, asyncRoutes } from '@/router'

const state = {
  // 所有的路由映射(每个用户依据角色会不一样)
  routes: constantRoutes // 最初是静态路由
}

const mutations = {
  // 修改路由映射数组的方法
  setRoutes(state, newRoutes) {
    // constantRoutes 静态路由
    // newRoutes 筛选好的动态路由(每个人不一样)
    state.routes = [...constantRoutes, ...newRoutes]
  }
}

const actions = {
  // 筛选出处于该用户的路由
  filterRoutes(context, menus) {
    const routes = [] // 每个人不同的动态路由映射
    // console.log(menus) // 菜单权限标识
    // asyncRoutes 完整的动态路由
    menus.forEach(item => {
      // item是每个权限标识
      const result = asyncRoutes.filter(route => {
        // 每个动态路由映射
        return route.name === item
      })
      routes.push(...result)
    })
    routes.push({ path: '*', redirect: '/404', hidden: true })
    context.commit('setRoutes', routes)
    // 返回筛选好的动态路由
    return routes
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
